Mobile data management using association table

ABSTRACT

Middleware for mobile data management may include an association table and a message store. The middleware may operate to receive a business object instance from a backend system, determine one or more mobile devices associated with the business object instance, associate the business object instance with the one or more mobile devices and with an insert state in an association table, and associate, in the association table, the business object instance and the one or more mobile devices with a full-state message in the message store.

FIELD

Some embodiments relate to enterprise systems utilizingoccasionally-connected mobile devices. In particular, some embodimentsare concerned with the management and consistency of business datawithin such systems.

BACKGROUND

Middleware may be used to provide functions to an enterprise. Middlewaregenerally facilitates access to business data within a back-end systemby an end-user of such data. More specifically, middleware may performadministrative functions such as conflict checking, integrity checking,and synchronization. These administrative functions may ensureconsistency and accessibility of business data throughout theenterprise.

An end-user of business data may interact with the enterprise via amobile device. In one example, a delivery person may deliver a productto customers along an established route. The delivery person may use amobile device to determine a product quantity and delivery schedule foreach customer on the route, to enter new orders and/or changes toexisting orders, and to indicate successful delivery of an order. Themobile device must therefore receive business data from a back-endsystem that is specific to the route with which the mobile device isassociated (e.g., product quantities, delivery schedules). The mobiledevice must also be able to transmit business data (e.g., new and/orchanged order information) to the back-end system for validation andstorage therein. Each of these functions may require conflict checkingand integrity checking as described above.

The synchronization of business data between a mobile device and aback-end system presents issues that may not arise in a non-mobilecontext. Primarily, mobile devices might not be continuously connectedto their associated back-end systems. It may therefore be more difficultto keep mobile devices up-to-date with respect to their associated data,and to maintain accurate knowledge of the internal state of the mobiledevices.

Conventional “replication and realignment” middleware for addressing theforegoing may use a store-and-forward approach in which each messageintended for each mobile device is queued as it is received from aback-end system. This approach may require an undesirably large amountof message storage. Bandwidth and processing inefficiencies may alsoresult from this approach because earlier-queued messages arestored-and-forwarded to an associated mobile device even if theearlier-queued messages are rendered unnecessary by later-queuedmessages. Alternatively, a connect-and-compute approach requiresmiddleware to compute appropriate synchronization messages only after amobile device is connected thereto.

Improvements to the efficiency of mobile middleware are thereforedesired. Moreover, mobile middleware is desired that may provideincreased control and/or more robust management of business data thancurrently available.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a system topology according to someembodiments.

FIG. 2 is a block diagram of a middleware software architectureaccording to some embodiments.

FIG. 3 is a tabular representation of a portion of an association tabledata structure according to some embodiments.

FIG. 4 is a tabular representation of a portion of a message store datastructure according to some embodiments.

FIG. 5 is a flow diagram of process steps to populate an associationtable according to some embodiments.

FIG. 6 illustrates consolidated data store records, an associationtable, and a business object hierarchy according to some embodiments.

FIG. 7 is a flow diagram of process steps to update an association tabledata structure according to some embodiments.

FIGS. 8A and B comprise tabular representations of a portion of anassociation table data structure to illustrate updating an associationtable data structure according to some embodiments.

FIG. 9 is a flow diagram of process steps to synchronize a mobile deviceaccording to some embodiments.

FIG. 10 is a tabular representation of a portion of an association tabledata structure to illustrate device synchronization according to someembodiments.

FIG. 11 is a tabular representation of a portion of an association tabledata structure to illustrate device synchronization according to someembodiments.

FIG. 12 is a state transition diagram for a business object instance inan association table according to some embodiments.

FIG. 13 is a flow diagram of process steps to perform referentialintegrity and synchronization completeness checks according to someembodiments.

FIGS. 14A and 14B comprise tabular representations of portions ofrespective association table data structures to illustrate referentialintegrity and synchronization completeness checks according to someembodiments.

FIG. 15 is a flow diagram of process steps to regenerate data on amobile device according to some embodiments.

FIGS. 16A and 16B comprise tabular representations of a portion of anassociation table data structure to illustrate regeneration of data on amobile device according to some embodiments.

FIG. 17 is a flow diagram of process steps to optimize a message storeaccording to some embodiments.

FIGS. 18A and 18B comprise tabular representations of a portion of amessage store and an association table data structure, respectively, toillustrate message store optimization according to some embodiments.

FIGS. 19A and 19B comprise tabular representations of a portion of amessage store and an association table data structure, respectively, toillustrate message store optimization according to some embodiments.

DETAILED DESCRIPTION

FIG. 1 illustrates a topology of enterprise system 100 according to someembodiments. System 100 may, for example, provide management of businessdata among disparate and occasionally-connected mobile devices. System100 includes back-end system 111 in communication with communicationnetwork 120. Also in communication with communication network 120 aremiddleware 130 and mobile devices 140 through 160.

Back-end system 110 of FIG. 1 includes database management system (DBMS)112 and database 114. DBMS 112 may comprise executable program code toretrieve data from database 114. Database 114 may comprise one or moredisparate systems for storing data, therefore DBMS 112 may comprise oneor more systems for retrieving stored data. According to someembodiments, database 114 is implemented as any suitable collection ofdata that may be accessed by a computer program to select particulardata from the collection. Back-end system 110 may comprise other unshownelements to provide an enterprise system such as SAP R/3™ EnterpriseResource Planning system.

Back-end system 110 may also comprise any other suitable program code,scripts, or other functional data that is executable to interface withcommunication network 120 and middleware 130 as described herein.Back-end system 110 may comprise any combination of hardware, software,and/or firmware elements that may provide the functions that areattributed to a back-end system herein. Two or more of these elementsmay be located remotely from one another and may communicate with oneanother via communication network 120 and/or a dedicated connection.

As used herein, systems “in communication” with one another are directlyor indirectly capable of communicating over any number of differentsystems for transferring data, including but not limited to a local areanetwork, a wide area network, a telephone network, a cellular network, afiber-optic network, a satellite network, an infrared network, a radiofrequency network, and any other type of network that may be used totransmit information between devices. Moreover, communication betweensystems may proceed over any one or more currently or hereafter-knowntransmission protocols, such as Asynchronous Transfer Mode (ATM),Internet Protocol (IP), Hypertext Transfer Protocol (HTTP) and WirelessApplication Protocol (WAP). Communication network 120 may thereforecomprise any communication media and protocols that are or become known.

Middleware 130 may comprise any combination of hardware, software,and/or firmware elements suitable to provide the functions that areattributed herein to middleware. In some embodiments, middleware 130comprises program code running in an environment provided by back-endsystem 110. Middleware 130 may be embodied as services, layers, and/orcore components of an associated operating environment, and/or may beembodied by any other executable software component, including a dynamiclink library or a stand-alone application.

According to some embodiments, middleware 130 provides an associationtable and a message store, each of which will be described in detailbelow. As will also be described below, middleware 130 may operate toreceive a business object instance from a backend system, determine oneor more mobile devices associated with the business object instance,associate the business object instance with the one or more mobiledevices and with an insert state in the association table, andassociate, in the association table, the business object instance andthe one or more mobile devices with a full-state message in the messagestore. Such features may provide more efficient management of businessdata among mobile devices than previously available.

Mobile devices 140 through 170 are associated with business objectstransmitted by back-end system 110. Continuing with the example from theBackground, a business object (BO) may comprise an order placed by acustomer and may therefore be associated with the one of mobile devices140 through 170 that is assigned to a delivery route to which thatcustomer belongs. According to some embodiments, middleware 130 isresponsible for transmitting an instance of the BO, as well as updatesthereto, the appropriate one of mobile devices 140 through 170.

Mobile devices 140 through 170 may comprise any of a laptop, a personaldigital assistant, a tablet computer, a handheld computer, a cellulartelephone, a dedicated mobile device, and any other suitable mobiledevice or devices that are or become known. As mentioned above, mobiledevices 140 through 170 may occasionally connect to middleware 130directly or via communication network 120.

FIG. 2 illustrates a software architecture of middleware 130 accordingto some embodiments. Middleware 130 is not limited to the illustratedarchitecture, and the architecture itself may be implemented in anycurrently- or hereafter-known manner.

Incoming message processing module 1301 is shown receiving messages fromback-end 110. These messages may be received from back-end 110 viacommunication network 120. Such messages may include instructions toinsert a BO instance, to update a BO instance, to remove a BO instance,and/or to perform any other functions attributed to middleware 130herein.

Incoming message processing module 130 uses publications/subscriptionsdata 1302 to identify one or more mobile devices with which an incomingBO instance should be associated. Such publications and subscriptionsmay follow a conventional model, in which a publication is a set ofcriteria fields on a BO instance with operations that can be used forfiltering data for a particular receiver (e.g., country+ZIP code), and asubscription is a specific set of values for the criteria fields of apublication (e.g., USA+[45000-45999]) that are associated with one ormore receivers to determine a set of receivers for a BO instance.

Admin tools 135 may be used to edit publications/subscriptions data1302. In this regard, middleware 130 may offer a suitable interface(e.g., https, etc.) to allow secure manipulation ofpublications/subscriptions data 1302 by an authorized user.

Consolidated data store 1303 receives the BO instance from module 1301to create a replica of relevant BO data from back-end system 110. Thereplica may be used by realignment module 1304 to replicate and realignthe BO data as will be described below. Generally, realignment module1304 updates association table 1305 through association update module1306 to associate BO instances in data store 1303 (e.g., via a BO ID)with devices (e.g., via a device ID).

Incoming message processing module 1301 may also instruct messagebuilder 1307 to build a full-state message or an update message based onthe received BO instance. The thus-built message is stored in messagestore 1308. The messages of message store 1308 may be transmitted toappropriate mobile devices during synchronization and based oninformation located in association table 1305. In some embodiments,message store 1308 is implemented such that an identical messageintended for two different mobile devices need only be stored once. Themessages of message store 1308 may, according to some embodiments, beoptimized and/or compressed to reduce a number of stored messages, asize of the stored messages, a number of messages transmitted to mobiledevices, and/or a size of the messages transmitted to mobile devices.

Requests for synchronizations and transmission of messages from messagestore 1308 are handled by extract module 1309. Data handler 1310initially receives synchronization requests from mobile devices 140through 170. Data handler 1310 may also receive new or updated BOinstances from mobile devices 140 through 170 for storage in back-end110. Since conflicts can occur in any environment that permitsconcurrent updates to the same data from multiple devices, such BOinstances are verified by conflict detection module 1311 using anysuitable conflict detection and resolution protocol.

For example, an update conflict may be detected when two mobile devicesattempt to update the same BO instance at nearly the same time. Auniqueness conflict may be detected if two devices each transmit a newBO instance having the same primary key value. Moreover, a deleteconflict may occur when one device attempts to delete a BO instance andanother device attempts to update or delete the BO instance.

FIG. 3 illustrates a tabular representation of association table datastructure 1305 according to some embodiments. Although referred to as a“table” herein, association table 1305 may comprise any type of datastructure for associating two or more data values. In the examplesbelow, two or more data values illustrated in a single “record” ofassociation table 1305 will be considered associated with one another.Accordingly, each “record” of association table 1305 represents a groupof associated data values.

The FIG. 3 representation shows seven fields as well as the types ofdata that may populate each. The Device ID field indicates a mobiledevice that is associated with the BO instance identified by the BOinstance ID field. The BO instance ID may refer to a structure ofconsolidated data store 1303 that holds data of the BO instance. Each ofthe two ID fields of table 1305 may be populated with a “UID” variabletype.

The Direct RefCount field indicates a reference count contributed bydirect subscriptions to the BO instance by the mobile device.Conversely, the Deps RefCount field indicates a reference countcontributed by dependent (indirect) subscriptions to the BO instance bythe mobile device. Usage of the RefCount fields according to someembodiments will be described below.

The Operation field indicates a state associated with the BO instanceand the mobile device. Possible values include “insert”, “update”,“delete”, and “current”. According to some embodiments, an “insert”state indicates that a full-state message of the BO instance will betransmitted to the mobile device at a next synchronization, an “update”state indicates that an update message to update some or all values ofthe BO instance on the mobile device will be transmitted to the mobiledevice at a-next synchronization, a “delete” state indicates that aninstruction to delete the BO instance from the device will betransmitted to the mobile device at a next synchronization, and a“current” state indicates that no operation is to be performed at a nextsynchronization because the device stores the current state of the BOinstance.

With reference to the above “insert” and “update” states, the DeltaMessage field indicates a reference to a full-state message withinmessage store 130 or specific fields of the BO instance to update. Thespecific fields may be indicated by a bitmask and the updated values ofthe fields may also be,stored in message store 1308.

The Missing Flag field indicates whether the BO instance associated withthe BO instance ID is missing from middleware 130. For example, aMissing Flag of TRUE may indicate that middleware 130 does not includethe BO instance.

FIG. 4 illustrates a tabular representation of message store 1308according to some embodiments. Message store 1308 may comprise any typeof data structure for associating Message IDs with message text.

The MsgId field may include serial Message IDs that aresequentially-created each time a new “record” of message store 1308 iscreated. The MsgText field includes a message to be transmitted to anappropriate one or more mobile devices based on association table 1305.If the message is an update (rather than a full-state message usedduring an “insert” operation), the SendBits field marks the fields of anassociated BO instance that are to be updated per the MsgText field. TheType field further indicates whether the message is a full-state orupdate message.

FIG. 5 is a flow diagram of process 200 to populate an association tableaccording to some embodiments. Process 200, as well as the otherprocesses illustrated herein, may be performed by any combination ofhardware, software, and firmware. These processes will be describedbelow as if executed by middleware 130 of FIG. 2, but embodiments arenot limited thereto.

A BO instance is initially received at 201. The BO instance may bereceived from back-end 110 by incoming message processing module 1301.Next, at 202, one or more mobile devices associated with the BO instanceare determined. Realignment module 1304 may determine the one or moremobile devices based data associated with the BO instance itself andpublications/subscriptions data 1302. Generally, one or more mobiledevices subscribing to the particular BO instance may be determined at202.

Realignment module 1304 may then associate the BO instance with one ofthe mobile devices and with an insert state in association table 1305 at203. In some examples of 203, a new record of table 1305 is createdincluding a Device ID of the mobile device, a BO Instance ID of thereceived BO instance, an insert state in the Operation field, and aMissing Flag of FALSE.

The association table is then used at 204 to associate the BO instanceand the mobile device with a full-state message in message store 1308.According to some examples, the full-state message may be stored inassociation with a MsgID in store 1308, and the MsgID may be stored theDelta Message field of the association table record created at 203.

Flow cycles through 203 and 205 as long as it is determined at 205 thatmore mobile devices are associated with the BO instance. As a result, arecord of association table 1305 is created for every mobile devicedetermined at 202. Next, flow pauses at 206 to wait for reception of anext BO instance.

FIG. 6 illustrates process 200 according to some embodiments. FIG. 6includes a representation of consolidated data store 1303,publications/subscriptions data 1302, and association table 1305. Alsoshown is BO hierarchy 300.

Consolidated data store 1303 shows BO instances received by middleware130. The Material 2 BO instance is shown in parentheses to indicate thatthis instance will be received later than the other illustrated BOinstances. In accordance with some embodiments of process 200, data 1302is used to determine that Device 1 (D1) is associated with eachinitially-received BO instance. Although data 1302 only indicates asubscription to BO instance Tour 1, such a subscription indicates anassociation between Device 1 and any BO instances that depend from BOinstance Tour 1.

Accordingly, a record of association table 1305 is created for each BOinstance in object hierarchy 300. The record associated with BO instanceTour 1 includes a Direct RefCount value of 1 and Deps RefCount value of0 while each other record initially includes a Direct RefCount value of0 and Deps RefCount value of 1. Also, in accordance with process 200,each record is associated with an “insert” state. The record associatedwith BO instance Material 2 is initially associated with a TRUE MissingFlag because the BO instance is initially not received by middleware130. The Missing Flag is changed from TRUE to FALSE after middleware 130receives the BO instance Material 2.

Realignment module 1304 may recursively traverse object hierarchy 300 todetermine the Deps RefCount for the records of association table 1305.As shown, such recursion indicates that BO instance Material 2 dependsfrom two BO instances. As a result, the Deps RefCount associated with BOinstance Material 2 is increased from 1 to 2.

FIG. 7 is a flow diagram of process 400 to update an association tablebased on an updated BO instance according to some embodiments. Theupdated BO instance is initially received at 401. The update may bereceived from back-end 110 by incoming message processing module 1301.Next, at 402, realignment module 1304 may determine a state associatedwith the BO instance in association table 1305.

FIGS. 8A and 8B illustrate tabular portions of association table 1305for purposes of describing process 400 according to some embodiments.Association table 1305 of FIG. 8A may represent an association tableprior to updates to BO instances I2, I3 and I4, while association table1305 of FIG. 8B may represent association table 1305 of FIG. 8A aftersuch updates.

It will first be assumed that the update received at 401 was an updateto BO instance I2, and the update consisted of changing field “B” tovalue “3”. Next, it is determined at 402 that the only state associatedwith BO instance I2 in FIG. 8A is the insert state. Following the“insert” path from 402, a new full-state message is associated with BOinstance I2 at 403. As shown in FIG. 8B, the association at 403 does notchange association table 1305, because the new full-state message isrepresented in message store 1308 and/or consolidated data store 1303.No further devices are associated with BO instance I2 in the FIG. 8Atable, so flow proceeds from 406 to 407.

Continuing the present example, flow returns to 401 to receive an updateto BO instance I3, the update consisting of changing field “B” to value“2”. At 402, it is determined that the current state is associated withBO instance I3 (and device D1) in FIG. 8A. Following the “current” pathfrom 402, the BO instance I3 is associated with the update state at 404,and the updated data is added to an update message associated with theBO instance I3 at 405. Such a change is reflected in the D1, I3 recordof FIG. 8B.

Next, at 406, it is determined that another device (D2) is associatedwith BO instance I3 in the FIG. 8A table. Flow therefore returns through402, 404 and 405 as described above, since the subject record of theFIG. 8A table is also associated with the current state. Flow thenproceeds from 406 to 407 because no further devices are associated withBO instance I3 in the FIG. 8A table.

Flow again returns to 401 to receive an update to BO instance I4. Theupdate consists of changing field “C” to value “5”. At 402, it isdetermined that is BO instance I4 (and device D1) is associated with thecurrent state in FIG. 8A. Again following the “current” path from 402,the BO instance I4 is associated with the update state at 404, and theupdated data is added to an update message associated with the BOinstance I4 at 405. These changes are reflected in the D1, I4 record ofFIG. 8B.

Next, at 406, it is determined that another device (D2) is associatedwith BO instance I4 in the FIG. 8A table. However, this device and BOinstance are associated with the update state. Flow therefore passesfrom 402 directly to 405 to add the updated data to the update messagealready in the FIG. 8A table. This update is reflected in the D2, I4record of association table 1305 of FIG. 8B. Flow then proceeds from 406to 407 because no further devices are associated with BO instance I4 inthe FIG. 8A table.

FIG. 9 illustrates a flow diagram of process 500 to synchronize a mobiledevice according to some-embodiments. Process 500 will be described withrespect to FIGS. 10 and 11. FIG. 10 illustrates a portion of associationtable 1305 associated with device D1 prior to process 500, and FIG. 11illustrates a portion of association table 1305 associated with deviceD1 after process 500.

At 501, an instruction is received to synchronize a mobile device. Theinstruction may be received by data handler 1310 from mobile device D1and passed to extract module 1309. All BO instances associated with themobile device are then determined at 502. As mentioned above, FIG. 10illustrates all BO instances associated with device D1 in associationtable 1305.

A state associated with one of the BO instances is determined at 503. Inthe present example, an insert state is initially determined to beassociated with BO instance I4 at 503. Accordingly, at 504, a full-statemessage associated with BO instance I4 is transmitted to mobile deviceD1. The full-state message may be associated with BO instance I4 in datastore 1303 and/or in message store 1308 via a reference in an associatedDelta Message field (not shown) of the D1, 14 record of table 1305.Next, at 506, a state associated with BO instance I4 and device D1 ischanged to current. Association table 1305 of FIG. 11 reflects thischange. Flow returns to 503 from 507 because more BO instances areassociated with device D1 in association table 1305.

According to the present example, it will be assumed that BO instancesassociated with the insert state will initially be determined at 503.Therefore, BO instance I5 is next determined to be associated with aninsert state at 503. At 504, a full-state message associated with BOinstance I5 is transmitted to mobile device D1, and a state associatedwith BO instance I5 and device D1 is changed to current at 506. Theabove process repeats for BO instance I8. In addition to the change tothe D1, I4 data record mentioned above, FIG. 11 reflects the foregoingchanges to the D1, I5 and D1, I8 data records of association table 1305.

Flow again returns to 503 from 507 because more BO instances areassociated with device D1 in association table 1305. Process 500 showsthat, for BO instances associated with a current state, no action istaken and flow simply proceeds to 507 to determine if more BO instancesexist.

BO instance I2 is determined to be associated with an update state atsome iteration of 503. As shown, an update message associated with BOinstance I2 is transmitted to device D1 at 505. The update message maybe stored in association 1305 and/or in message store 1308 as describedabove. The state associated with BO instance I2 is then changed tocurrent at 506 and flow continues to 507. Flow proceeds to 508 from 507if all BO instances have been determined at 503.

FIG. 11 illustrates records of association table 1305 aftersynchronization of device D1. The foregoing description of process 500did not mention BO instance I7, which was associated with a remove statein FIG. 10. According to some embodiments of process 500, a message istransmitted to the synchronizing device to delete all BO instances thatare associated with a remove state. Corresponding records of associationtable 1305 are also removed, as reflected in FIG. 11.

FIG. 12 is a state transition diagram for a single BO instance in anassociation table according to some embodiments. Diagram 600 reflectsmany aspects of the processes described above. The insert state isinitially entered when a BO instance is associated with a mobile deviceby a corresponding record of an association table. The final staterepresents removal of the record from the association table.

FIGS. 13 through 19B illustrate some potentially beneficial managementfunctions that may be provided by an association table as describedherein. FIG. 13, for example, is a flow diagram of process 700 toperform a synchronization completeness check and a referential integritycheck according to some embodiments.

Such a check is initiated at 701 and, at 702, it is determined if eachBO instance in an association table is associated with the currentstate. FIG. 14A is a representation of association table 1305 to providean illustration of the determination at 702. As shown, the D2, I4 recordis associated with an insert state rather than a current state.Accordingly, synchronization is determined to be incomplete at 703. Itshould be noted that synchronization is complete for device D1 asrepresented in FIG. 14A.

FIG. 14B illustrates association table 1305 in which all BO instancesare associated with a current state. If applying process 700 toassociation table 1305 of FIG. 14B, flow would therefore proceed from702 to 704. At 704, it is determined whether any flags of theassociation table indicate that data associated with a BO instance ismissing. This determination is affirmative in the case of associationtable 1305 of FIG. 14B (e.g., the D2, I5 record), so a referentialintegrity error is noted at 705. In contrast, the checks are deemedsuccessful at 706 if the determination at 704 is negative.

In some embodiments of 700, the referential integrity check is performedbefore the synchronization completeness check. Some embodiments performthese checks independently of one another, and/or with respect tospecific mobile devices rather than with respect to an entireassociation table.

FIG. 15 illustrates process 800 to regenerate data stored on a mobiledevice. Such regeneration may be used to replace a lost device or toreload corrupted or otherwise faulty data on a device. FIG. 16Aillustrates a portion of association table 1305 associated with thedevice prior to regeneration, and FIG. 16B illustrates a portion ofassociation table 1305 associated with the device after regeneration.

States associated with each BO instance that is associated with thedevice are determined from association table 1305 at 801. BO instancesassociated with the update state or the current state are associatedwith the insert state in association table 1305 at 802. BO instancesassociated with the remove state or the delete state are removed fromassociation table 1305 at 803. Such associations and removals arereflected in table 1305 of FIG. 16B.

The mobile device is then synchronized at 804 based on table 1305 ofFIG. 16B. As described with respect to process 500, full-state messagesassociated with each BO instance of table 1305 will be transmitted tothe mobile device during synchronization, thereby regenerating each BOinstance on the mobile device.

FIG. 17 is a flow diagram of process 900 to optimize a message storebased on receipt of an updated BO instance according to someembodiments. The updated BO instance may be received at 901 fromback-end 110 by incoming message processing module 1301.

FIGS. 18A and 18B illustrate tabular portions of message store 1308 andassociation table 1305, respectively, for providing an example ofprocess 900 according to some embodiments. Message store 1308 andassociation table 1305 of FIGS. 18A and 18B may represent a period priorto receipt of an update at 901.

According to the example, the received update updates field “B” of BOinstance O1 to “4”. Association table 1305 of FIG. 18B shows fiverecords (and, therefore five states) associated with BO instance O1. Oneof the associated states is determined at 902. It will be assumed thatthe current state associated with BO instance O1 in the D3, O1 record isinitially determined at 902.

Accordingly, the BO instance O1 is associated with the update state at903, and a corresponding new update message is stored in message store1308 at 904. The BO instance O1 is then associated with the new updatemessage in association table 1305 at 905.

FIGS. 19A and 19B illustrate tabular portions of message store 1308 andassociation table 1305, respectively, after completion of process 900according to some embodiments. Accordingly, message store 1308 andassociation table 1305 of FIGS. 19A and 19B illustrate the changesdescribed above with respect to 903, 904 and 905. Specifically, the BOinstance O1 in the D3, O1 record has been associated with the updatestate, a corresponding new update message is stored in message store1308, and the BO instance O1 in the D3, O1 record is associated with thenew update message in association table 1305 via the Delta (i.e. MsgID)“5”.

Next, at 906, it is determined that other devices are associated with BOinstance O1 in the FIG. 18B table. Flow therefore returns to 902, wherethe insert state associated with BO instance O1 in the D1, O1 record isdetermined. Accordingly, a corresponding new full-state message isstored in message store 1308 at 907, and the BO instance O1 isassociated with the new full-state message in association table 1305 at905. Again, these changes are illustrated by message store 1308 andassociation table 1305 of FIGS. 19A and 19B. In particular, a newfull-state message is stored in message store 1308, and the BO instanceO1 in the D1, O1 record is associated with the new full-state message inassociation table 1305 via the Delta (i.e. MsgID) “6”.

It is again determined at 906 that other devices are associated with BOinstance O1 in the FIG. 18B table. The update state associated with BOinstance O1 in the D2, O1 record is then determined at 902. Accordingly,a corresponding new update message is stored in message store 1308 at904, and the BO instance O1 is associated with the new update message inassociation table 1305 at 905 via Delta (MsgID) “7”. The new updatemessage updates a previous update message that was stored in messagestore 1308 and associated with BO instance O1 in the D2, O1 record viaDelta (MsgID) “3”.

The foregoing flow through 902, 904 and 905 then repeats twice for BOinstance O1 in the D4, O1 record and the D5, 01 record. In these cases,the new update message stored in message store 1308 updates a previousupdate message that was stored in message store 1308 and associated-withBO instance O1 in each record via Delta (MsgID) “4”. Also, the BOinstance O1 of each record is associated with the new update message inassociation table 1305 at 905 via Delta (MsgID) “8”.

Flow then proceeds from 906 to 908 because no further devices areassociated with BO instance O1 in association table 1305. In someembodiments, process 900 improves maintenance of message store 1308 byallowing periodic purging of all messages associated with MsgID that isless than a lowest Delta of association table 1305.

The embodiments described herein are solely for the purpose ofillustration. Those in the art will recognize that other embodiments maybe practiced with modifications and alterations.

1. A method comprising: receiving, from a backend system by middleware,a business object instance; determining, by the middleware, one or moremobile devices associated with the business object instance, the one ormore mobile devices not being continuously connected in communicationwith the backend system; associating, by the middleware, the businessobject instance with the one or more mobile devices and with an insertstate in an association table, the insert state indicating a full-statemessage of the business object instance is to be transmitted to the oneor more mobile devices upon a synchronization of the one or more mobiledevices and the full-state message being a complete instantiation of thebusiness object; associating, in the association table by themiddleware, the business object instance and the one or more mobiledevices with a full-state message in a message store; receiving, by themiddleware from one of the one or more mobile devices, an instruction tosynchronize the back end system with the one of the one or more mobiledevices; and for each business object instance associated with the oneof the one or more mobile devices in the association table: determining,by the middleware, a state associated with the business object instanceand with the one of the one or more mobile devices in the associationtable; in an instance it is determined the insert state is associatedwith the one of the one or more mobile devices and the business objectinstance in the association table, transmitting the full-state messageassociated with the one of the one or more mobile devices and thebusiness object instance to the one of the one or more mobile devices;and in an instance it is determined an update state is associated withthe one of the one or more mobile devices and the business objectinstance in the association table, transmitting an update messageassociated with the business object instance and the one of the one ormore mobile devices to the one of the one or more mobile devices.
 2. Themethod according to Claim 1, further comprising: storing, by themiddleware, a message identifier in the association table; storing, bythe middleware, the message identifier in the message store; andassociating, by the middleware, the full-state message with the messageidentifier in the message store.
 3. The method according to claim 1,further comprising: receiving, by the middleware, an update to thebusiness object instance; determining, by the middleware, a second oneor more mobile devices associated with the business object instance; andfor each one of the second one or more mobile devices: determining, bythe middleware, a state associated with the business object instance andwith the one of the second one or more mobile devices in the associationtable; an instance the business object instance and the one of thesecond one or more mobile devices are associated with a current state inthe association table, associating the business object instance and theone of the second one or more mobile devices with an update state and anupdate message data in the association table; an instance the businessobject instance and the one of the second one or more mobile devices areassociated with the update state in the association table, associatingthe business object instance and the one of the second one or moremobile devices with the update message data in the association table;and an instance the business object instance and the one of the secondone or more mobile devices are associated with the insert state in theassociation table, associating, in the association table ,the businessobject instance and the one of the second one or more mobile deviceswith a new full-state message of the message store.
 4. The methodaccording to claim 3, further comprising: receiving, by the middleware,an instruction to synchronize with one of the second one or more mobiledevices; and for each business object instance associated with the oneof the second one or more mobile devices in the association table:determining, by the middleware, a state associated with the businessobject instance and with the one of the second one or more mobiledevices in the association table; an instance the insert state isassociated with the one of the second one or more mobile devices and thebusiness object instance in the association table, transmitting the newfull-state message to the one of the second one or more mobile devices;and an instance the update state is associated with the one of thesecond one or more mobile devices and the business object instance inthe association table, transmitting the update message associated withthe business object instance and the one of the second one or moremobile devices to the one of the second one or more mobile devices. 5.The method according to claim 1, further comprising: receiving, by themiddleware, an instruction to remove the business object instance fromthe one or more mobile devices; associating, by the middleware, thebusiness object instance and the one or more mobile devices with aremove state in the association table; receiving, by the middleware fromone of the one or more mobile devices, an instruction to synchronizewith the one of the one or more mobile devices; determining, by themiddleware, that the one of the one or more mobile devices and thebusiness object instance are associated with the remove state in theassociation table; transmitting, from the middleware, an instruction toremove the business object instance from the one of the one or moremobile devices; and removing, by the middleware, the association betweenthe one of the one or more mobile devices and the business objectinstance from the association table.
 6. The method according to claim 5,further comprising: decrementing, by the middleware, a reference countassociated with the business object instance and the one mobile devicein the association table; and removing, by the middleware, theassociation between the one mobile device and the business objectinstance from the association table if the reference count equals zero.7. The method according to claim 1, further comprising: associating, bythe middleware, each business object instance of the association tablewith a respective flag, the flag to indicate whether data associatedwith a respective business object instance is missing from middleware;and determining, by the middleware, whether any of the flags indicatethat data associated with a respective business object instance ismissing from middleware.
 8. The method according to claim 1, furthercomprising: regenerating, by the middleware, data for one of the one ormore mobile devices by: associating, by the middleware, all businessobject instances associated with the one of the one or more mobiledevices and with the update state or a current state in the associationtable with the insert state; and removing, by the middleware, allbusiness object instances associated with the one of the one or moremobile devices and with a remove state or a delete state in theassociation table.
 9. The system comprising: middleware comprising anassociation table and a message store, the middleware to: receive abusiness object instance from a backend system; determine one or moremobile devices associated with the business object instance, the one ormore mobile devices not being continuously connected in communicationwith the backend system; associate the business object instance with theone or more mobile devices and with an insert state in an associationtable, the insert state indicating a full-state message of the businessobject instance is to be transmitted to the one or more mobile devicesupon a synchronization of the one or more mobile devices and thefull-state message being a complete instantiation of the businessobject; associate, in the association table, the business objectinstance and the one or more mobile devices with a full-state message inthe message store; receive from one of the one or more mobile devices,an instruction to synchronize the backend system with the one of the oneor more mobile devices; and for each business object instance associatedwith the one of the one or more mobile devices in the association table:determine a state associated with the business object instance and withthe one of the one or more mobile devices in the association table; inan instance it is determined the insert state is associated with the oneof the one or more mobile devices and the business object instance inthe association table, transmit the full-state message associated withthe one of the one or more mobile devices and the business objectinstance to the one of the one or more mobile devices; and in aninstance it is determined an update state is associated with the one ofthe one or more mobile devices and the business object instance in theassociation table, transmit an update message associated with thebusiness object instance and the one of the one or more mobile devicesto the one of the one or more mobile devices.
 10. The system accordingto Claim 9, the middleware further to: store a message identifier in theassociation table; store the message identifier in the message store;and associate the full-state message with the message identifier in themessage store.
 11. The system according to claim 9, the middlewarefurther to: receive an update to the business object instance; determinea second one or more mobile devices associated with the business objectinstance; and for each one of the second one or more mobile devices:determine a state associated with the business object instance and withthe one of the second one or more mobile devices in the associationtable; in an instance the business object instance and the one of thesecond one or more mobile devices are associated with a current state inthe association table, associate the business object instance and theone of the second one or more mobile devices with an update state and anupdate message data in the association table; in an instance thebusiness object instance and the one of the second one or more mobiledevices are associated with the update state in the association table,associate the business object instance and the one of the second one ormore mobile devices with the update message data in the associationtable; and in an instance the business object instance and the one ofthe second one or more mobile devices are associated with the insertstate in the association table, associate, in the association table ,thebusiness object instance and the one of the second one or more mobiledevices with a new full-state message of the message store.
 12. Thesystem according to claim 11, the middleware further to: receive aninstruction to synchronize with one of the second one or more mobiledevices; and for each business object instance associated with the oneof the second one or more mobile devices in the association table:determine a state associated with the business object instance and withthe one of the second one or more mobile devices in the associationtable; in an instance the insert state is associated with the one of thesecond one or more mobile devices and the business object instance inthe association table, transmit the new full-state message to the one ofthe second one or more mobile devices; and in an instance the updatestate is associated with the one of the second one or more mobiledevices and the business object instance in the association table,transmit the update message associated with the business object instanceand the one of the second one or more mobile devices to the one of thesecond one or more mobile devices.
 13. The system according to claim 9,the middleware further to: receive an instruction from the backendsystem to remove the business object instance from the one or moremobile devices; associate the business object instance and the one ormore mobile devices with a remove state in the association table;receive a second instruction to synchronize with one of the one or moremobile devices; determine that the one mobile device and the businessobject instance are associated with the remove state in the associationtable; and remove the association between the one mobile device and thebusiness object instance from the association table.
 14. The systemaccording to claim 13, the middleware further to: decrement a referencecount associated with the business object instance and the one mobiledevice the association table; and remove the association between the onemobile device and the business object instance from the associationtable if the reference count equals zero.
 15. The system according toclaim 9, the middleware further to: associate each business objectinstance of the association table with a respective flag, the flag toindicate whether data associated with a respective business objectinstance is missing from middleware; and determine whether any of theflags indicate that data associated with a respective business objectinstance is missing from middleware.
 16. The system according to claim9, the middleware further to: regenerate data for one of the one or moremobile devices by: association of all business object instancesassociated with the one mobile device and with the update state or acurrent state in the association table with the insert state; andremoval of all business object instances associated with the one of theone or more mobile devices and with a remove state or a delete state inthe association table.
 17. A computer-readable medium storing programcode, the program code comprising: code to receive a business objectinstance from a backend system by middleware; code to determine, by themiddleware, one or more mobile devices associated with the businessobject instance, the one or more mobile devices not being continuouslyconnected in communication with the backend system; code to associate,by the middleware, the business object instance with the one or moremobile devices and with an insert state in an association table, theinsert state indicating a full-state message of the business objectinstance is to be transmitted to the one or more mobile devices upon asynchronization of the one or more mobile devices and the full-statemessage being a complete instantiation of the business object; code toassociate, by the middleware, in the association table, the businessobject instance and the one or more mobile devices with a full-statemessage in the message store; code to receive, by the middleware, fromone of the one or more mobile devices, an instruction to synchronize thebackend system with the one of the one or more mobile devices; and foreach business object instance associated with the one of the one or moremobile devices in the association table: code to determine, by themiddleware, a state associated with the business object instance andwith the one of the one or more mobile devices in the association table;code to, in an instance it is determined the insert state is associatedwith the one of the one or more mobile devices and the business objectinstance in the association table, transmit the full-state messageassociated with the one of the one or more mobile devices and thebusiness object instance to the one of the one or more mobile devices;and code to, in an instance it is determined an update state isassociated with the one of the one or more mobile devices and thebusiness object instance in the association table, transmit an updatemessage associated with the business object instance and the one of theone or more mobile devices to the one of the one or more mobile devices.18. The computer-readable medium according to claim 17, the program codefurther comprising: code to store, by the middleware, a messageidentifier in the association table; code to store, by the middleware,the message identifier in the message store; and code to associate, bythe middleware, the full-state message with the message identifier inthe message store.
 19. The computer-readable medium according to claim17, the program code further comprising: code to receive, by themiddleware, an update to the business object instance; code todetermine, by the middleware, a second one or more mobile devicesassociated with the business object instance; and for each one of thesecond one or more mobile devices: code to determine, by the middleware,a state associated with the business object instance and with the one ofthe second one or more mobile devices in the association table; code toassociate, in an instance the business object instance and the one ofthe second one or more mobile devices are associated with a currentstate in the association table, the business object instance and the oneof the second one or more mobile devices with an update state and anupdate message data in the association table; code to associate, in aninstance the business object instance and the one of the second one ormore mobile devices are associated with the update state in theassociation table, the business object instance and the one of thesecond one or more mobile devices with the update message data in theassociation table; and code to associate in the association table, in aninstance the business object instance and the one of the second one ormore mobile devices are associated with the insert state in theassociation table, the business object instance and the one of thesecond one or more mobile devices with a new full-state message of themessage store.
 20. The computer-readable medium according to claim 19,the program code further comprising: code to receive, by the middleware,an instruction to synchronize with one of the second one or more mobiledevices; and for each business object instance associated with the oneof the second one or more mobile devices in the association table: codeto determine, by the middleware, a state associated with the businessobject instance and with the one of the second one or more mobiledevices in the association table; code to transmit, in an instance theinsert state is associated with the one of the second one or more mobiledevices and the business object instance in the association table, thenew full-state message to the one of the second one or more mobiledevices; and code to transmit, in an instance the update state isassociated with the one of the second one or more mobile devices and thebusiness object instance in the association table, the update messageassociated with the business object instance and the one of the secondone or more mobile devices to the one of the second one or more mobiledevices.
 21. The computer-readable medium according to claim 17, theprogram code further comprising: code to receive, by the middleware, aninstruction from the backend system to remove the business objectinstance from the one or more mobile devices; code to associate, by themiddleware, the business object instance and the one or more mobiledevices with a remove state in the association table; code to receive,by the middleware, a second instruction to synchronize with one of theone or more mobile devices; code to determine, by the middleware, thatthe one mobile device and the business object instance are associatedwith the remove state in the association table; and code to remove, bythe middleware, the association between the one mobile device and thebusiness object instance from the association table.
 22. Thecomputer-readable medium according to claim 21, the program code furthercomprising: code to decrement, by the middleware, a reference countassociated with the business object instance and the one mobile devicethe association table; and code to remove, by the middleware, theassociation between the one mobile device and the business objectinstance from the association table if the reference count equals zero.23. The computer-readable medium according to claim 17, the program codefurther comprising: code to associate, by the middleware, each businessobject instance of the association table with a respective flag, theflag to indicate whether data associated with a respective businessobject instance is missing from middleware; and code to determine, bythe middleware, whether any of the flags indicate that data associatedwith a respective business object instance is missing from middleware.24. The computer-readable medium according to claim 17, the program codefurther comprising: code to regenerate, by the middleware, data for oneof the one or more mobile devices by associating all business objectinstances associated with the one mobile device and with the updatestate or a current state in the association table with the insert state,and removing all business object instances associated with the one ofthe one or more mobile devices and with a remove state or a delete statein the association table.